/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package demo;

import br.unesp.rc.locadora.beans.Acesso;
import br.unesp.rc.locadora.beans.Contato;
import br.unesp.rc.locadora.beans.Endereco;
import br.unesp.rc.locadora.beans.Fisica;
import br.unesp.rc.locadora.connection.hibernate.FabricaConexao;
import br.unesp.rc.locadora.dao.hibernate.FisicaDAO;
import br.unesp.rc.locadora.dao.hibernate.FisicaDAOImpl;
import java.io.*;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author aluno
 */
public class Main {

    public static void main(String[] args) {
        File arq = new File("C:\\resultsHibernateProc.txt");
        
        if (arq.exists()) {
            System.out.println("Arquivo já existente");
        } else {
            try {
                arq.createNewFile();
                System.out.println("Arquivo criado");
            } catch (IOException ex) {
                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        try {
            FileWriter fw = new FileWriter(arq);
            PrintWriter pw = new PrintWriter(fw);
            long tf,ti;
            double tt;
            int i;
            long iAcesso=0;
            StringBuffer sb = new StringBuffer();
            
            FabricaConexao.criaFabricaSessao();
            FisicaDAO fdao = new FisicaDAOImpl();
            
            Fisica f = new Fisica();
            f.setCpf(123456789);
            f.setNome("Harry a");
            f.setDataNascimento(new Date());

            Contato c = new Contato("3333-4444", "harry@a.com");
            f.setContato(c);

            Endereco e = new Endereco("Rua 24A", 
                    1515, 
                    "Bela Vista", 
                    "13575-090", "Rio Claro", "SP");
            f.setEndereco(e);
            
            iniciaTeste(1,10,iAcesso,f,fdao,pw);
            iAcesso = 10;
            iniciaTeste(2,50,iAcesso,f,fdao,pw);
            iAcesso = 60;
            iniciaTeste(3,100,iAcesso,f,fdao,pw);
            iAcesso = 160;
            iniciaTeste(3,150,iAcesso,f,fdao,pw);
            iAcesso = 310;
            iniciaTeste(4,200,iAcesso,f,fdao,pw);
            iAcesso = 510;
            iniciaTeste(5,250,iAcesso,f,fdao,pw);
            iAcesso = 760;
            iniciaTeste(6,300,iAcesso,f,fdao,pw);
            iAcesso = 1060;
            iniciaTeste(7,350,iAcesso,f,fdao,pw);
            iAcesso = 1410;
            iniciaTeste(8,400,iAcesso,f,fdao,pw);
            iAcesso = 1810;
            iniciaTeste(9,450,iAcesso,f,fdao,pw);
            iAcesso = 2260;
            iniciaTeste(10,500,iAcesso,f,fdao,pw);
            iAcesso = 2760;
            iniciaTeste(11,600,iAcesso,f,fdao,pw);
            iAcesso = 3360;
            iniciaTeste(12,700,iAcesso,f,fdao,pw);
            iAcesso = 4060;
            iniciaTeste(13,800,iAcesso,f,fdao,pw);
            iAcesso = 4860;
            iniciaTeste(14,900,iAcesso,f,fdao,pw);
            iAcesso = 5760;
            iniciaTeste(15,1000,iAcesso,f,fdao,pw);
            iAcesso = 6760;
            iniciaTeste(16,1500,iAcesso,f,fdao,pw);
            iAcesso = 8260;
            iniciaTeste(17,2000,iAcesso,f,fdao,pw);
            iAcesso = 10260;
            iniciaTeste(18,2500,iAcesso,f,fdao,pw);
            iAcesso = 12760;
            iniciaTeste(19,3000,iAcesso,f,fdao,pw);
            iAcesso = 15760;
            iniciaTeste(20,3500,iAcesso,f,fdao,pw);
            iAcesso = 19260;
            iniciaTeste(21,4000,iAcesso,f,fdao,pw);
            iAcesso = 23260;
            iniciaTeste(22,4500,iAcesso,f,fdao,pw);
            iAcesso = 28260;
            iniciaTeste(23,5000,iAcesso,f,fdao,pw);
            iAcesso = 33260;
            iniciaTeste(24,6000,iAcesso,f,fdao,pw);
            iAcesso = 39260;
            iniciaTeste(25,7000,iAcesso,f,fdao,pw);
            iAcesso = 46260;
            iniciaTeste(26,8000,iAcesso,f,fdao,pw);
            iAcesso = 54260;
            iniciaTeste(27,9000,iAcesso,f,fdao,pw);
            iAcesso = 63260;
            iniciaTeste(28,10000,iAcesso,f,fdao,pw);
            
            pw.close();
            fw.close();
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    
    public static void iniciaTeste(int numTeste, int numRegistros, long iAcesso,
            Fisica f, FisicaDAO fdao, PrintWriter pw){
        
            StringBuffer sb = new StringBuffer();
            long ti,tf;
            double tt;
            int i;
        
            System.out.println("Iniciando Teste " + numTeste);
            sb.append("Teste " + numTeste + ": Inclusão de " + numRegistros + " registros - JDBC");
            sb.append(System.getProperty("line.separator"));
            ti = System.nanoTime();
            for(i = 0; i < numRegistros; i++){
                Acesso a = new Acesso("a"+iAcesso, "a"+iAcesso);
                iAcesso++;
                f.setAcesso(a);
                fdao.cadastrarProc(f);
                //sb.append(iAcesso);
                //sb.append(System.getProperty("line.separator"));
            }
            tf = System.nanoTime();
            
            sb.append("Tempo do teste: ");
            tt = (((double)tf)-((double)ti))/1000000000;
            sb.append(tt);
            sb.append(" segundos");
            sb.append(System.getProperty("line.separator"));
            System.out.println("Finalizando Teste " + numTeste);
            
            pw.write(sb.toString());
    }
}